package exercises.leetcode;

/**
 * <a href="https://leetcode-cn.com/problems/B1IidL/">
 * 剑指 Offer II 069. 山峰数组的顶部</a>
 *
 * <p><span color="#87CEEB">描述:</span>
 * 符合下列属性的数组 arr 称为 山峰数组（山脉数组） ：
 * <ul>
 * <li>arr.length >= 3</li>
 * <li>存在 i（0 < i < arr.length - 1）使得：</li>
 * <ul>
 * <li>arr[0] < arr[1] < ... arr[i-1] < arr[i]</li>
 * <li>arr[i] > arr[i+1] > ... > arr[arr.length - 1]</li>
 * </ul>
 * </ul>
 * 给定由整数组成的山峰数组 arr ，返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i ，即山峰顶部。
 *
 * @author or2
 * @date 2021年10月14日 时间: 7:43
 */
public class Offer2_69 {
    public int peakIndexInMountainArray(int[] arr) {
        int left = 1, right = arr.length;
        while (left < right) {
            int mid = left + (right - left + 1 >> 1);
            if (arr[mid - 1] < arr[mid])
                left = mid;
            else
                right = mid - 1;
        }
        return left;
    }
}
